package v2ch4.ExecSQL;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class BookDAO {

    private final Connection con;

    public BookDAO(Connection con)
    {
        this.con = con;
    }

    //получение Book из строки ResultSet
    private Book getBookFromRS(ResultSet rs) throws SQLException {
        Book result = new Book();
        result.setTitle(rs.getString("title"));
        result.setIsbn(rs.getString("isbn"));
        result.setPublisher_id(rs.getString("Publisher_id"));
        result.setUrl(rs.getString("url"));
        result.setPrice(rs.getInt("price"));
        return result;
    }

    //получение Book по id
    public Book getBook(String id)
    {
        Book result = null;
        try
        {
            PreparedStatement ps = con.prepareStatement("SELECT * FROM books WHERE Publisher_Id=?");
            ps.setString(1, id);
            ResultSet rs = ps.executeQuery();
            if( rs.next() )
            {
                result = getBookFromRS(rs);
            }
            ps.close();
        }
        catch( SQLException e )
        {
            e.printStackTrace();
        }

        return result;
    }

    //получение списка всего Book
    public List<Book> getBookList()
    {
        List<Book> result = new ArrayList<Book>();
        try
        {
            ResultSet rs = con.createStatement().executeQuery( "SELECT * FROM books" );
            while( rs.next() )
            {
                result.add(getBookFromRS(rs));
            }
            rs.close();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }

        return result;
    }

    //создание/обновление книги в базе
    public void updateBook(Book book)
    {
//        try
//        {
//            PreparedStatement ps;
//            //если договор не новый
//            if ( book.getId() > 0 )
//            {
//                ps = con.prepareStatement( "UPDATE books SET title=?, balance=? WHERE id=?" );
//                ps.setInt(3, book.getId());
//            }
//            else
//            {
//                ps = con.prepareStatement( "INSERT INTO books (title, balance) VALUES (?,?)" );
//            }
//
//            ps.setString(1, book.getTitle());
//            ps.setFloat( 2, book.getBalance() );
//            ps.executeUpdate();
//            ps.close();
//        }
//        catch( SQLException e )
//        {
//            e.printStackTrace();
//        }
    }

    //удаление
    public void deleteBook(String id)
    {
        try
        {
            PreparedStatement ps = con.prepareStatement("DELETE FROM books WHERE Publisher_Id=?" );
            ps.setString(1, id);
            ps.executeUpdate();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
    }

}
